The rendering of three-dimensional computer graphics is a computationally intensive process. In many high-end applications, three-dimensional computer graphics are rendered using a pool or cluster of computers, which share the processing responsibilities. In such a system, one computer may be configured to execute at least one application program and communicate graphics data to other computers for rendering. In this regard, a collection of computers may be configured to cooperatively render a graphics image and may receive the graphics data to be rendered from the computer executing the application program.
When multiple computers are used to render a single scene, the video signals generated by each of those computers are combined into a single aggregate (or composite) signal and encoded in a particular format, such as NTSC (National Television Standards Committee), PAL (phase alteration by line), etc. There exist devices called compositors that perform the function of combining (or compositing) multiple video signals into a single, composite video signal. Accordingly, there are known approaches for performing the functions of a compositor.
Reference is now made to the drawings, in which FIG. 1 illustrates a multi-node system for rendering three-dimensional graphics. Many high-end or intensive graphic programs are executed, and graphics images are rendered, using a plurality of computers in combination. There are various ways in which multiple computers are configured to operate either in parallel or in conjunction to perform a graphics-rendering task. One way is to configure one computer 110 to operate as a master, and configure the remaining plurality of computers 120 to operate as slaves. In the illustrated embodiment, the slave computers 120 are configured to collectively render a three-dimensional graphics image. The rendering among the slave computers 120 are partitioned in a variety of ways. One way is to subdivide the screen space into various partitions and have each slave computer render the data associated with its partition. Another way is to partition the graphics data into layers and have each slave 120 render one or more layers.
In the system illustrated in FIG. 1, the master computer 110 executes an application program 112 that involves the rendering of three-dimensional graphics. The control and functionality of the application program 112 is handled by the master computer 110. As well, the master computer 110 is handled various two dimensional graphics rendering that is incidental to the execution of the application program 112. For example, the presentation of drop-down menus or other items of presentation that do not require three-dimensional rendering is performed by the master computer 110. Each of the computers (master computer 110 and each of the slave computers 120) comprises a graphics card (or other graphics circuitry) that outputs a signal for a video display 140. Since, however, the content that is rendered by each of the computers are first combined, the video outputs of each of the computers are delivered to a compositor 130. A compositor 130 operates to combine the content of each of the plurality of input video signals to deliver a single, composite output signal 132 that is used to drive a display device 140.
An alternative environment comprises multiple displays 140 that are configured to operate as a single logical display. There are a variety of applications in which graphics information is presented over a panel or matrix of displays, to effectively emulate a single, large display. Examples of such systems include: real estate, financial (such as the stock market), control room, large engineering processes, military mapping, telecommunications, etc. Such systems require the output of large amounts of data, which can easily exceed the viewable display capacity of a single, physical monitor (a user could view relevant data only by panning and zooming).
In a system environment such as that of FIG. 1, the computer 110 executing the graphics application program communicates to the cluster of render nodes 120 the relevant data utilized for carrying out the rendering operations. The structure and content of such data will be known and appreciated by persons skilled in the art, as it is the underlying data specifying primitives, texture, lighting, shading, and other aspects employed for rendering a given graphics image. In one embodiment, such information is communicated by the master 110 to the individual slave computers as appropriate, based upon the partitioned operation of the slave units. In other embodiments, the data is communicated to a defined slave computer that is running a process or program that would further subdivide and allocate the underlying graphics information to individual slave nodes for processing.
Reference is now made to FIG. 2, which illustrates an alternative configuration of a prior art system similar to that illustrated in FIG. 1, except that the system in FIG. 2 is a multi-host graphics system. In such a system, multiple hosts are provided to allow a user to render graphics under differing operating platforms, or alternatively to utilize different operating platforms in support of different application programs for graphics applications. For example, a first host 210 may be configured to operate under a windowing platform, such as Microsoft Windows. A second host 220 may be configured to operate under a Unix or other operating system platform. Render clusters 211 and 221 are dedicated for operation with each of the independent host computers 210 and 220, respectively. Outputs of each bost/render cluster group (210/211 and 220/221) are coupled to a compositor 230 and 231, respectively. Compositors 230 and 231 generate composite signals corresponding for the corresponding host/render cluster group. A KVM (keyboard, video, mouse) 225 or other switching mechanism is provided to controllably select an active host/render cluster group for output to a display 240, where the relevant graphics may be visibly displayed.
It should be appreciated that such a system results in excess overhead in that it utilizes multiple render clusters, when only one cluster is effectively operational to control the viewing display at a given time.